package com.easypan.entity.po;

import com.easypan.entity.enums.DateTimePatternEnum;
import com.easypan.utils.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * 文件分享信息
 */
@Getter
@Setter
@Accessors(chain = true)
public class FileShare implements Serializable
{

    /**
     * 分享ID
     */
    private String shareId;

    /**
     * 文件ID
     */
    private String fileId;

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 有效期类型 0:1天 1:7天 2:30天 3:永久有效
     */
    private Integer validType;

    /**
     * 过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",
                timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expireTime;

    /**
     * 分享时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",
                timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shareTime;

    /**
     * 提取码
     */
    private String code;

    /**
     * 浏览次数
     */
    private Integer showCount;

    /**
     * 文件名
     */
    private String fileName;

    /**
     * 文件封面
     */
    private String fileCover;

    /**
     * 文件夹类型  0:文件  1:目录
     */
    private Integer folderType;

    /**
     * 文件分类  1:视频  2:音频  3:图片  4:文档  5:其他
     */
    private Integer fileCategory;

    /**
     * 文件类型  1:视频  2:音频  3:图片  4:pdf  5:doc  6:excel  7:txt  8:code  9:zip  10:其他
     */
    private Integer fileType;

    @Override
    public String toString() {
        return "分享ID:" + (shareId == null ?
                          "空" :
                          shareId) + "，文件ID:" + (fileId == null ?
                                                 "空" :
                                                 fileId) + "，用户ID:" + (userId == null ?
                                                                       "空" :
                                                                       userId) + "，有效期类型 0:1天 1:7天 2:30天 3:永久有效:" + (validType == null ?
                                                                                                                     "空" :
                                                                                                                     validType) + "，过期时间:" + (expireTime == null ?
                                                                                                                                              "空" :
                                                                                                                                              DateUtil.format(expireTime,
                                                                                                                                                      DateTimePatternEnum.YYYY_MM_DD_HH_MM_SS.getPattern())) + "，分享时间:" + (shareTime == null ?
                                                                                                                                                                                                                           "空" :
                                                                                                                                                                                                                           DateUtil.format(
                                                                                                                                                                                                                                   shareTime,
                                                                                                                                                                                                                                   DateTimePatternEnum.YYYY_MM_DD_HH_MM_SS.getPattern())) + "，提取码:" + (code == null ?
                                                                                                                                                                                                                                                                                                       "空" :
                                                                                                                                                                                                                                                                                                       code) + "，浏览次数:" + (showCount == null ?
                                                                                                                                                                                                                                                                                                                           "空" :
                                                                                                                                                                                                                                                                                                                           showCount);
    }
}
